#include <iostream>
#include <string>
#include "String.h"

using namespace std;

//16

void func(const dew::String& s)
{
    for(int i = 0; i < s.size(); i++)
    {
        cout << s[i] << " ";
    }
    cout << endl;
}

void test()
{
    dew::String s1("hello world");
    func(s1);
}

// void test()
// {
//     dew::String s1;
//     cout << s1.c_str() << endl;

//     dew::String s2("hello world");

//     dew::String::iterator it = s2.begin();

//     for(auto e : s2)
//     {
//         cout << e;
//     }

//     cout << endl;

//     // while(it != s2.end())
//     // {
//     //     cout << *it << "-";
//     //     it++;
//     // }

//     // cout << endl;

//     // for(int i = 0; i < s2.size(); i++)
//     // {
//     //     cout << s2[i] << " ";
//     // }
//     // cout << endl;
//     //cout << s2.c_str() << endl;

// }

int main()
{
    test();
    return 0;
}


//14

// int main()
// {
//     string s1 = "hello";
//     string s2 = " world";

//     string ret1 = s1 + s2;
//     cout << ret1 << endl;

//     string ret2 = s1 + 's';
//     cout << ret2 << endl;

//     string ret3 = 's' + s1;
//     cout << ret3 << endl;

//     // string s1;
//     // s1.insert(0,1,'c');

//     // cout << s1 << endl;

//     // s1.insert(s1.begin(),'c');

//     // cout << s1 << endl;


//     return 0;
// }

// int main()
// {
//     string s1("hello");

//     s1 += " world";

//     cout << s1 << endl;

//     s1 += "xxxxxxxxxxx";

//     cout << s1 << endl;

//     // s1.push_back(' ');

//     // s1.append("world");

//     // cout << s1 << endl;

//     return 0;
// }


// int main()
// {
//     string s1("hello worldxxx");
//     cout << s1.capacity() << endl;
//     s1.resize(5);
//     cout << s1.capacity() << endl;
//     cout << s1 << endl;
//     return 0;
// }


// int main()
// {
//     string s1;
//     // string s2("hello worldxxxxxxxxxxxxxxxxxxxx");

//     // cout << s1.capacity() << endl;
//     // cout << s2.capacity() << endl;
//     s1.reserve(500);
//     int old = s1.capacity();
//     cout << old << endl;
    
//     for(int i = 0; i < 600;i++)
//     {
//         s1.push_back('x');
//         if(old != s1.capacity())
//         {
//             old = s1.capacity();
//             cout << old << endl;
//         }
//     }

//     return 0;
// }


// int main()
// {
//     string s1("hello world");
//     string s2;

//     cout << s1.max_size() << endl;
//     cout << s2.max_size() << endl;


//     // string::reverse_iterator it = s1.rbegin();

//     // while(it != s1.rend())
//     // {
//     //     cout << *it << " ";
//     //     ++it;   
//     // }

//     return 0;
// }

// int main()
// {
//     string s1("hello world");

//     const string s2("hello world");

//     string::const_iterator cit = s2.begin();
//     while(cit != s2.end())
//     {
//         cout << *cit << " ";
//         cit++;
//     }

//     cout << endl;

//     // int begin = 0;
//     // int end = s1.size() - 1;

//     // while(begin < end)
//     // {
//     //     swap(s1[begin],s1[end]);
//     //     // int temp = s1[begin];
//     //     // s1[begin] = s1[end];
//     //     // s1[end] = temp;
//     //     begin++;
//     //     end--;
//     // }

//     // string::iterator it = s1.begin();

//     // while(it != s1.end())
//     // {
//     //     cout << *it;
//     //     it++;
//     // }

//     // cout << endl;

//     // for(auto e:s1)
//     // {
//     //     cout << e;
//     // }

//     // cout << endl;

//     // for(string::iterator it = s1.begin(); it < s1.end(); it++)
//     // {
//     //     cout << *it <<" ";
//     // }

//     // cout << endl;

//     // for(int i = 0; i < s1.size(); i++)
//     // {
//     //     cout << s1[i] << " ";
//     // }

//     // cout << endl;
//     return 0;
// }


// int main()
// {

//     // string s1("hello world");
//     // string s2(s1,2,5);
//     // cout << s1 << endl;
//     // cout << s2 << endl;

//     string s3(9,'c');

//     cout << s3 << endl;

//     s3 = "hello world";
//     cout << s3 << endl;
//     s3 = 'c';
//     cout << s3 << endl;
//     // string s1;
//     // string s2 = "hello world";
//     // string s3("hello world");

//     // string s4 = s3;

//     // string s5(s4);

//     // cout << s1 << endl;
//     // cout << s2 << endl;
//     // cout << s3 << endl;
//     // cout << s4 << endl;

//     return 0;
// }


